home *** CD-ROM | disk | FTP | other *** search
Text File | 1997-06-28 | 1.3 KB | 53 lines | [TEXT/CWIE] |
- // ConstBufferOf.h
-
- #ifndef ConstBufferOf_h
- #define ConstBufferOf_h
-
- #ifndef ArrayOf_h
- #include "ArrayOf.h"
- #endif
-
- template < class Element > class BufferOf;
-
- template < class Element >
- class ConstBufferOf
- {
- typedef ArrayOf<Element> ArrayType;
- typedef ConstArrayOf<Element> ConstArrayType;
-
- typedef BufferOf<Element> BufferType;
- typedef ConstBufferOf<Element> ConstBufferType;
-
- private:
- ConstArrayType space;
- ConstArrayType unused;
-
- // not implemented:
- ConstBufferOf( const ConstBufferType& );
- void operator=( const ConstBufferType& );
-
- public:
- ConstBufferOf( ConstArrayType );
-
- void Reset() { unused = space; }
- void Reset( ConstArrayType );
-
- inline void AdvanceMark( uint32 amount )
- { unused = unused.Tail( amount ); }
-
- ConstArrayType Used() const { return space.Head( UsedLength() ); }
- const ConstArrayType& Unused() const { return unused; }
-
- uint32 TotalLength() const { return space.Length(); }
- uint32 UsedLength() const { return space.Length() - unused.Length(); }
- uint32 UnusedLength() const { return unused.Length(); }
-
- bool IsUnused() const { return unused.Length() == space.Length(); }
- bool Exhausted() const { return unused.IsEmpty(); }
-
- void operator>>( ArrayType );
- void operator>>( BufferType& );
- };
-
- #endif
-